package com.ruicar.afs.cloud.bizcommon.vo.rules;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.bizcommon.enums.rules.AtomComponentType;
import com.ruicar.afs.cloud.bizcommon.enums.rules.AtomOperatorScopeType;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

@Data
public class AfsRuleAtomVo {
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    @NotBlank(message = "原子key不能为空")
    @NotNull(message = "原子key不能为空")
    private String atomKey;
    /**
     * 原子中文名
     */
    @NotBlank(message = "原子名称不能为空")
    @NotNull(message = "原子名称不能为空")
    private String atomName;
    /**
     * 原子组件类型;dic-数据字典
     * custDic-自定义字典
     * date-日期
     * text-文本
     * number-数字
     * cascader-级联类型
     */
    @NotNull(message = "原子类型不能为空")
    private AtomComponentType atomType;
    /**
     * 可用操作符范围;all-所有
     * cust-自定义
     */
    @NotNull(message = "原子操作符范围不能为空")
    private AtomOperatorScopeType atomOperatorScope;
    /**
     * 取值表达式
     */
    @NotBlank(message = "原子取值表达式不能为空")
    @NotNull(message = "原子取值表达式不能为空")
    private String atomValueExpress;
    /**
     * 原子组件配置信息;配置json串
     */
    @NotBlank(message = "原子组件配置信息不能为空")
    @NotNull(message = "原子组件配置信息不能为空")
    private String atomComponentConfig;

    List<String> relList;

    List<String> operatorKeyList;
}
